home *** CD-ROM | disk | FTP | other *** search
- /* TrackKey.c */
- /*
- * Copyright © 1989 Martin Minow. All rights reserved.
- *
- * TrackKey(key, track_handle)
- * key The character to insert
- * track_handle The TrackRecord handle.
- *
- * Replace the selection character, leaving an insertion
- * point just past the inserted charcter. If the key
- * is backspace (hex 08), the selection or character
- * before the insertion point is deleted.
- *
- * Note: we don't do "arrow-key" selection as described
- * in Inside Mac, volume IV.
- */
- #include "TrackEdit.h"
- #define TR (*tr)
-
- void
- TrackKey(c, track_handle)
- CHAR c;
- TrackHandle track_handle;
- {
- register TrackPtr tr;
- _Track_state state;
- DOT start;
- char text[1];
-
- tr = _Track_lock(track_handle, &state);
- start = TR.selStart;
- if (c != '\b') {
- _Track_do_clear(track_handle, FALSE, FALSE);
- tr = (*track_handle);
- text[0] = c;
- _Track_do_insert(tr, TR.selStart, text, 1L);
- TR.selStart++;
- TR.selEnd = TR.selStart;
- }
- else {
- /*
- * Backspace cuts the selection, or, if there is
- * none, the preceeding character.
- */
- if (TR.selEnd == TR.selStart
- && TR.selStart > 0)
- --TR.selStart;
- start = TR.selStart;
- _Track_do_clear(track_handle, FALSE, FALSE);
- }
- _Track_rebuild(track_handle, start);
- _Track_unlock(&state);
- }
-